(deftemplate intrebare
    (slot stringIntrebare)
    (slot raspuns)
    )
(deftemplate faculta
    (multislot nume))

(assert (intrebare (stringIntrebare nil)(raspuns nil)))
(assert (faculta (nume nil)))

(defrule q
     (declare (salience 100))
(intrebare (stringIntrebare nil)(raspuns nil))
=>
(printout t "Doriti consiliere in legatura cu alegerea unei facultati? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Doriti consiliere in legatura cu alegerea unei facultati?")(raspuns ?r)))
)
(defrule r1
     (declare (salience 99))
(intrebare (stringIntrebare "Doriti consiliere in legatura cu alegerea unei facultati?")(raspuns NU))
=>
(printout t "Va multumim pentru sinceritate. Mult succes." crlf)
)
(defrule q0
     (declare (salience 78))
	(intrebare (stringIntrebare "Doriti consiliere in legatura cu alegerea unei facultati?")(raspuns DA))
	=>
	(printout t "Ok. Care este nota dvs la Matematica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la Matematica?")(raspuns ?r)))
	)
(defrule q1
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la Matematica?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Care este nota dvs la Informatica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la Informatica?")(raspuns ?r)))
)
(defrule q2
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la Matematica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Care este nota dvs la Limba si literatura romana?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la Limba si literatura romana?")(raspuns ?r)))
	)
(defrule q3
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la Informatica?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Care este nota dvs la Fizica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la Fizica?")(raspuns ?r)))
)
(defrule q4
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la Informatica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ar trebui sa alegeti Facultatea de Economie si Administrare a Afacerilor." crlf)
	
	)
(defrule r2
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la Fizica?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Ar trebui sa alegeti Facultatea Politehnica." crlf)
)
(defrule r3
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la Fizica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ar trebui sa alegeti Facultatea de Matematica si Informatica." crlf)
)

(defrule q5
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la Limba si literatura romana?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Care este nota dvs la limbile straine?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la limbile straine?")(raspuns ?r)))
)
(defrule q6
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la Biologie?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Care este nota dvs la Fizica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Care este nota dvs la Biologie")(raspuns ?r)))
	)
(defrule r6
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la limbile straine?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Ar trebui sa alegi Facultatea de Litere." crlf)
)
(defrule r7
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la limbile straine?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ar trebui sa alegi Facultatea de Stiinte Politice." crlf)
)
(defrule r8
     (declare (salience 99))
(intrebare (stringIntrebare "Care este nota dvs la Biologie?")(raspuns ?x & : (>= ?x 8)))
=>
	(printout t "Ar trebui sa alegi Facultatea de Medicina si Farmacie." crlf)
)
(defrule r9
     (declare (salience 78))
	(intrebare (stringIntrebare "Care este nota dvs la Biologie?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ar trebui sa alegi Facultatea de Geografie." crlf)
)

(facts)
(run)